/*
Problem Description
读入两个不超过25位的火星正整数A和B，计算A+B。需要注意的是：在火星上，整数不是单一进制的，
第n位的进制就是第n个素数。例如：地球上的10进制数2，在火星上记为“1,0”，因为火星个位数是2进制的；
地球上的10进制数38，在火星上记为“1,1,1,0”，因为火星个位数是2进制的，十位数是3进制的，百位数是5进制的，
千位数是7进制的……
 

Input
测试输入包含若干测试用例，每个测试用例占一行，包含两个火星正整数A和B，
火星整数的相邻两位数用逗号分隔，A和B之间有一个空格间隔。当A或B为0时输入结束，相应的结果不要输出。
 

Output
对每个测试用例输出1行，即火星表示法的A+B的值。
 

Sample Input
1,0 2,1
4,2,0 1,2,0
1 10,6,4,2,1
0 0
 

Sample Output
1,0,1
1,1,1,0
1,0,0,0,0,0
 */
package com.yuan.algorithms.training20150807;

import java.util.Scanner;

/**
 * @author YouYuan
 * @eMail E-mail:1265161633@qq.com
 * @Time 创建时间：2015年8月9日 下午2:20:27
 * @Explain 说明:
 */
public class 火星A加B {

	static int[] prime = { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43,
			47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113 };
	static Scanner in = new Scanner(System.in);

	public static void main(String[] args) {
		while (in.hasNext()) {
			String strA = in.next();
			String strB = in.next();
			if (strA.equals("0") || strB.equals("0")) {
				break;
			}
			String a[] = strA.split(",");
			String b[] = strB.split(",");
			int n = 0;
			int lenA = a.length;
			int lenB = b.length;
			int len = Math.max(lenA, lenB);
			int[] result = new int[len + 1];
			for (int i = len; i >= 0; i--) {
				if (--lenA>=0) {
					result[i] += Integer.parseInt(a[lenA]);
				}
				if (--lenB>=0) {
					result[i] += Integer.parseInt(b[lenB]);
				}
			}
			for (int i = len, p = 0; i >= 0; i--, p++) {
				if (result[i] >= prime[p]) {
					if (i != 0) {
						int s = result[i] / prime[p];
						result[i] %= prime[p];
						result[i - 1] += s;
					}
				}
			}
			for (int i = 0, m = 0; i < len + 1; i++) {
				if (m==0 && result[i] == 0) {
					continue;
				} else {
					m = 1;
				}
				if (i == len) {
					System.out.print(result[i]);
				} else {
					System.out.print(result[i]+",");
				}
			}
			System.out.println();
		}
	}

}
